The present invention relates to data communication systems, data transmission apparatuses, data reception apparatuses, data communication methods, and computer programs. More specifically, the present invention relates to a data communication system, a data transmission apparatus, a data reception apparatus, a data communication method, and a computer program that serve to improve error resilience in the transfer of packets containing streaming data.
Nowadays, transmission of data including images and audio data via various communications media such as the Internet has become popular and is widely performed. In particular, recent data transmissions over the Internet have been offering an increasing number of streaming transmission services in addition to download transmission services. When transmitting multimedia data such as a video file or an audio file, download transmission involves downloading the data file from a distributing server into a storage medium at a receiver-side terminal and subsequently reading the data from the storage medium. Download transmission does not enable the file to be played until the file has been completely transmitted, which makes it unsuitable for long-time playback or real-time playback.
In contrast, the latter, namely, streaming transmission, involves reading received data while the data is being transmitted from a sender to a receiver. Streaming transmission is widely used by Internet services including Internet telephony, remote videoconferencing, and video-on-demand.
Streaming transmission has been used and developed in systems involving storing, for example, an MPEG (Moving Picture Experts Group) stream, which is generated by MPEG-compression of image data, in IP (Internet Protocol) packets, transmitting the packets over the Internet, and receiving the packets by communications terminals, including personal computers (PCs), personal digital assistants (PDAs), and cellular phones. Streaming transmission is advantageous in performing video-on-demand, streaming distribution of live video images, and realtime communications including videoconferencing and videophones.
One Internet technique suitable for such streaming transmission is the Realtime Transport Protocol (RTP), which is defined in the Internet Engineering Task Force (IETF) Request For Comments (RFC) 1889. RTP-compliant data transmission adds a timestamp serving as time information to a packet. With reference to the timestamp, the time relationship between the sender side and the receiver side is determined. The receiver side reads the data in synchronization without being influenced by delay fluctuations in packet transmission (jitter).
RTP does not ensure real-time data transmission. Since the transport service provided by RTP does not have control over prioritization, setting, and management of packet transmission, RTP packets, as in other packets, may be sent at a delayed time or may be lost on the network. In case of such errors, the receiver side can use only the packets that have arrived within the expected time and read their data. Even if video data or audio data is defective, the data can be read with degraded quality or by compensating for the lack of data.
Packets which are not on time for being read and which are transmitted at a delayed time or packets with errors are discarded by the receiver side. In other words, when packet loss or error occurs, even when the sender side performs high-quality data transmission, the receiver side may not be able to read the data while maintaining the quality. In particular, when there are errors greater than or equal to 10−5 in wired sections or 10−3 in wireless sections, RTP-compliant data transmission has a problem maintaining the quality of distributed media.
One scheme for solving the problem in RTP-compliant data transmission involves transmission of a packet retransmission request and a retransmission packet in accordance with the TCP (Transmission Control Protocol), which is highly reliable in data transmission. Although TCP has a high error resilience, TCP has a low throughput and large delay. When a packet is retransmitted, the packet may not be on time for being read. This makes it difficult to implement real-time communications.
One possible error correction technique for correcting packet errors is, for example, Forward Error Correction (FEC). FEC transmits FEC data serving as redundant data for performing error correction. When an error occurs, the receiver side corrects the error on the basis of the FEC data. FEC is advantageous over Automatic Repeat reQuest (ARQ) in that FEC has a reduced delay time since there is no delay caused by retransmission. However, FEC adds redundant data, and FEC thus has a lower throughput. Furthermore, it is difficult to determine optimal FEC data to be added in accordance with network status, so that FEC is always susceptible to the problem of a processing-time overhead.